package com.solution.admin.area.service.impl;

import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;

import com.solution.admin.area.dao.AreaDao;
import com.solution.admin.area.entity.AreaEntity;
import com.solution.admin.area.service.AreaService;
import com.solution.common.dao.BaseDao;
import com.solution.common.service.impl.BaseServiceImpl;

/**
 * 区域信息service层
 * @author diwankang
 * @date 2017年4月10日 上午10:49:07
 */
@Service
public class AreaServiceImpl extends BaseServiceImpl<AreaEntity> implements AreaService {

	@Autowired
	private AreaDao areaDao;

	@Override
	protected BaseDao<AreaEntity> getDao() {
		return areaDao;
	}
	
	/**
     * 根据约束条件获取区域列表
     * @Title: getAreaList   
     * @Description:(描述)   
     * @param areaStr 区域编码拼接字符串，逗号分隔（320100,321010）
     * @param province 省
     * @param length 长度（以此限制索取区域级别，
     * 8  --省<br>
     * 15 --市<br>
     * 22 --区<br>
     * 25 --区(海南有几个特例，因此区最终取长度25)）<br>
     * 32 --街道<br>
     * @return List<AreaEntity>    
     * @author xu_cc  
     */
	@Cacheable(value="area", key="'area_'+#map['parentId']")
    public List<AreaEntity> getAreaCheckList(Map<String, String> map) {
        return areaDao.getAreaCheckList(map);
    }

	/**
	 * 查询区域信息
	 * @param map
	 * @return
	 * @author diwankang
	 * @date 2017年4月12日 下午2:43:42
	 */
	@Override
	public List<AreaEntity> listArea(Map<String, Object> map) {
		return areaDao.listArea(map);
	}

	/**
	 * 查询指定区域下的所有区域信息
	 * @param rootId
	 * @return
	 * @author shanchuangye
	 * @date 2017年4月15日 下午3:03:54
	 */
	@Override
	@Cacheable(value="area",key="'area_'+#rootId")
	public List<AreaEntity> listAreaTree(Long rootId) {
		return areaDao.listAreaTree(rootId);
	}
	
	/**
     * 一次性加载区域级别的数据
     * @param object
     * @return
     */
	public List<AreaEntity> listAreaForSelector(Map<String, Object>	param){
		return areaDao.listAreaForSelector(param);
	}
}